package com.dp.mallchat.common.user.domain.user.entity;

import lombok.Data;
import org.apache.commons.lang3.StringUtils;

import java.io.Serializable;
import java.util.Objects;
import java.util.Optional;

/**
 * @Author: dupeng
 * @CreateTime: 2024-06-11  17:05
 * @Description: ip信息
 */
@Data
public class IpInfo implements Serializable {

    //注册时的ip
    private String createIp;
    //注册时的ip详情
    private IpDetail createIpDetail;
    //最新登录的ip
    private String updateIp;
    //最新登录的ip详情
    private IpDetail updateIpDetail;

    // 设置最新ip
    public void refreshIp(String ip) {
        if (StringUtils.isEmpty(ip)) {
            return;
        }
        updateIp = ip;
        if (createIp == null) {
            createIp = ip;
        }
    }

    /**
     * 返回需要刷新ip
     * @param
     */
    public String isNeedRefreshIp(){
//        boolean isNeed = Optional.ofNullable(updateIpDetail)
//                .map(IpDetail::getIp)
//                .filter(ip -> !Objects.equals(ip, updateIp))
//                .isPresent();
//        return isNeed ? updateIp : null;
        boolean notNeedRefresh = Optional.ofNullable(updateIpDetail)
                .map(IpDetail::getIp)
                .filter(ip -> Objects.equals(ip, updateIp))
                .isPresent();
        return notNeedRefresh ? null : updateIp;
    }

    public void updateIpDetail(IpDetail ipDetail) {
        if (Objects.isNull(ipDetail)) {
            return;
        }
        if (Objects.isNull(createIpDetail)) {
            createIpDetail = ipDetail;
        }
        updateIpDetail = ipDetail;
    }

}
